// pages/video/video.js
import request from "../../utils/request";
Page({
  /**
   * 页面的初始数据
   */
  data: {
    vedioCategoryTag: [],
    currentTagIndex: 0,
    currentTagVedios: [],
    currentTag: "",
    videoCtx: "",
    preVidioIndex: "init",
    playFlag: "",
    vidioUpdataInfo: [],
    pullDownRefreshState: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getVedioCategoryTag();
  },
  async getVedioCategoryTag() {
    const tagsData = await request("/video/group/list");
    if (tagsData.code === 200) {
      this.setData({
        vedioCategoryTag: tagsData.data.slice(0, 14),
      });
      /* 
        由于getVedioCategoryTag 与 getVedioDetail都是异步请求
        不能并列将二者写入onload  会导致后者拿不到前者请求的数据
        也就不能初始化id
        将后者写在前者内部 由于setData是同步的 就可以拿到数据
      */
      this.getVedioDetail(this.data.vedioCategoryTag[0].id);
    }
  },

  async getVedioDetail(id) {
    if (!this.data.vedioCategoryTag[0]) {
      return;
    }
    const vedioDetailData = await request("/video/group", {
      id,
    });
    wx.hideLoading();
    console.log(vedioDetailData);
    if (vedioDetailData.code === 200) {
      const currentTagVedios = vedioDetailData.datas.map((item, index) => {
        item.id = index++;
        return item;
      });
      this.setData({
        currentTagVedios,
      });
    }
    this.setData({
      pullDownRefreshState: false,
    });
  },

  tagClick(e) {
    this.setData({
      currentTagIndex: e.target.dataset.index,
      currentTagVedios: [],
      currentTag: e.target.dataset.title,
    });
    wx.showLoading({
      title: "加载中",
    });
    console.log(e.target.dataset);
    this.getVedioDetail(e.target.dataset.tagid);
  },

  handlePlay(e) {
    /* 
      由于性能优化后一个页面中只会存在一个视频 因此不用关闭上一次播放得视频 
    */
    // var videoContext = wx.createVideoContext(this.data.preVidioIndex);
    // if (videoContext && e.target.id !== this.data.preVidioIndex) {
    //   // 判断一下  以防第一次为空
    //   videoContext.pause();
    // }
    this.setData({
      preVidioIndex: e.target.id,
      playFlag: true,
    });
    const videoItem = this.data.vidioUpdataInfo.find(
      (item) => item.index == e.target.id
    );
    if (videoItem) {
      var videoContext = wx.createVideoContext(e.target.id);
      videoContext.seek(videoItem.currentTime);
    }
    console.log(e);
  },

  handleUpdateTime(e) {
    console.log(e);
    let itemObj = {
      index: e.target.id,
      time: e.detail.currentTime,
    };

    const flagItem = this.data.vidioUpdataInfo.find(
      (item) => item.index == itemObj.index
    );
    // 如果数组中已经存在了之前的index 则覆盖掉
    if (flagItem) {
      // 改变已经找到的这个item  覆盖原来的currentTime 但是注意这里并没有更新数据 后面要统一更新数据
      flagItem.currentTime = e.detail.currentTime;
    } else {
      this.setData({
        vidioUpdataInfo: [...this.data.vidioUpdataInfo, itemObj],
      });
    }
    this.setData({
      vidioUpdataInfo: [...this.data.vidioUpdataInfo],
    });
  },

  handlePullDown() {
    const { vedioCategoryTag, currentTagIndex } = this.data;
    this.getVedioDetail(vedioCategoryTag[currentTagIndex].id);
    console.log("pull down");
  },
  handlePullUp() {
    console.log("handlePullUp");
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // const userInfo = wx.getStorageSync("userInfo");
    // if (!userInfo) {
    //   wx.navigateTo({
    //     url: "/pages/login/login",
    //   });
    // }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function ({ from }) {
    console.log(from); //转发的事件源元素
    return {
      title: "自定义标题",
      path: "/pages/video/video.wxml",
      imageUrl: "/assets/img/test.jpeg",
    };
  },
});
